home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / trueSpace 7.6 / tS761B8Std.exe / {app} / Scripts / MaterialEditor / Bricks / Compound / Gooch.Brick.xml < prev    next >
Extensible Markup Language  |  2008-06-10  |  3KB  |  44 lines

  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <ME_BRICK GUID="{0B157BA3-7A87-404E-BCA8-A9AB178344E5}" Name="RtUGooch" GUIName="Gooch lighting" Description="The Gooch non-photorealistic lighting model">
  3.     <ME_BRICK_INPUTPARAM GUID="{58828928-60D1-44BD-9F58-B0F15DE191CE}" Name="CoolColor" Type="RtFloat4"/>
  4.     <ME_BRICK_INPUTPARAM GUID="{F35B890B-A978-4893-8529-444E17A686EB}" Name="WarmColor" Type="RtFloat4"/>
  5.     <ME_BRICK_INPUTPARAM GUID="{72E5E9C2-CB51-477C-B918-BDD6B492E256}" Name="CoolModifier" Type="RtFloat"/>
  6.     <ME_BRICK_INPUTPARAM GUID="{B04316E0-C25E-454A-A1B5-39D446CED5D8}" Name="WarmModifier" Type="RtFloat"/>
  7.     <ME_BRICK_INPUTPARAM GUID="{C34D4380-D43C-43A5-B3C3-814F613713B2}" Name="DiffuseColor" Type="RtFloat4"/>
  8.     <ME_BRICK_INPUTPARAM GUID="{5892F830-3172-44EF-97C0-7B08D3CBD682}" Name="SpecularColor" Type="RtFloat4"/>
  9.     <ME_BRICK_INPUTPARAM GUID="{AF4D6894-8FC2-49A1-809E-E9FAC1228E4D}" Name="Shininess" Type="RtFloat"/>
  10.     <ME_BRICK_INPUTPARAM GUID="{6D08A0E6-3EC8-4848-B3EF-1D8C650A536E}" Name="NormalVector" Type="RtFloat3"/>
  11.     <ME_BRICK_INPUTPARAM GUID="{7EE1F100-FA6D-4183-8BBD-CE3D1F4849B9}" Name="EyeDirection" Type="RtFloat3"/>
  12.     <ME_BRICK_INPUTPARAM GUID="{83AA73D9-A6CA-4FA0-904E-1A4CE30C560C}" Name="LightDirection" Type="RtFloat3"/>
  13.     <ME_BRICK_INPUTPARAM GUID="{4EC6DE58-0DE7-4F98-AFDF-1316311ADF19}" Name="LightColor" Type="RtFloat4"/>
  14.     <ME_BRICK_OUTPUTPARAM GUID="{02A7851A-6997-42F9-B45C-9DDF2DD1CF14}" Name="ResultColor" Type="RtFloat4"/>
  15.     <ME_BRICK_CODE><![CDATA[
  16.     void RtUGooch(in RtFloat4 CoolColor, in RtFloat4 WarmColor,
  17.                   in RtFloat CoolModifier, in RtFloat WarmModifier,
  18.                   in RtFloat4 DiffuseColor, 
  19.                   in RtFloat4 SpecularColor, in RtFloat Shininess,
  20.                   in RtFloat3 NormalVector, in RtFloat3 EyeDirection,
  21.                   in RtFloat3 LightDirection, in RtFloat4 LightColor,
  22.                   out RtFloat4 ResultColor)
  23.     {
  24.         RtFloat3 vNormal = NormalVector;
  25.         RtFloat3 vLightDir = LightDirection;
  26.         RtFloat3 vEye = EyeDirection;
  27.         RtFloat4 cCool = CoolColor + CoolModifier * DiffuseColor;
  28.         RtFloat4 cWarm = WarmColor + WarmModifier * DiffuseColor;
  29.         RtFloat DiffuseCoef = rtx_Dot(vNormal, vLightDir);
  30.         RtFloat BlendVal = DiffuseCoef * 0.5f + 0.5f;
  31.         ResultColor = rtx_Lerp(cCool, cWarm, BlendVal) * LightColor;
  32.  
  33.         if (DiffuseCoef>0)
  34.         {
  35.             RtFloat3 vLightReflect = rtx_Reflect(rtx_Negate(vLightDir), vNormal);
  36.             RtFloat EyeDotReflect = rtx_Saturate(rtx_Dot(vEye, vLightReflect));
  37.             RtFloat SpecularCoef = rtx_Pow(EyeDotReflect, Shininess);
  38.             ResultColor = ResultColor + (SpecularColor * SpecularCoef * LightColor);
  39.         }
  40.         ResultColor.a = DiffuseColor.a;
  41.     }
  42.     ]]></ME_BRICK_CODE>
  43. </ME_BRICK>
  44.